using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Exercise.Api.Repository
{
    public interface IRepository<T>
    {
        IQueryable<T> Table{get;}

        //根据Id获取指定实体
        T GetById(int id);

        //使用实体并插入数据
        void Insert(T entity);

        //异步使用实体并插入数据
        Task InsertAsync(T entity);

        //批量插入实体数据
        void InsertBulk(IEnumerable<T> entities);

        //异步批量插入实体数据
        Task InsertBulkAsync(IEnumerable<T> entities);

        //根据entity对象更新数据
        void Update(T entity);

        //用异步根据entities实体更新数据
        void UpdateBulk(IEnumerable<T> entities);

        //根据Id删除对应的记录
        void Delete(int id);
    }
}